package com.by.controller;


import com.by.entity.ProductAttr;
import com.by.result.Result;
import com.by.service.ProductAttrService;
import com.by.vo.ProductAttrValueVo;
import com.by.vo.ProductAttrVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/productAttr")
public class ProductAttrController {

    @Autowired
    private ProductAttrService productAttrService;
    /**
     * 查询所有的规格项和值
     * @return 规格项和值的列表
     */
     @GetMapping("/list")
     public Result<List<ProductAttrVo>> list() {
         return Result.success(productAttrService.listAttr());
     }

    /**
     * 查询同一个规格项下的所有规格值
     * @param attrId 规格项ID
     * @return 规格项值的列表
     */
    @GetMapping("/list-value")
    public Result<List<ProductAttrValueVo>> listAttrValue(@RequestParam("attrId") Long attrId) {
        return Result.success(productAttrService.listAttrValue(attrId));
    }

    /**
     * 新增规格项
     * @param productAttrVo 规格项信息
     * @return 规格项ID
     */
     @PostMapping("/save")
     public Result saveAttr(@RequestBody ProductAttrVo productAttrVo) {
         ProductAttr productAttr = new ProductAttr();
         BeanUtils.copyProperties(productAttrVo, productAttr);
         productAttrService.saveOrUpdate(productAttr);
         return Result.success(productAttr.getAttrId());
     }

    /**
     * 删除规格项
     * @param attrId 规格项ID
     * @return 删除结果
     */
     @DeleteMapping("/delete")
     public Result deleteAttr(@RequestParam("attrId") Long attrId) {
         productAttrService.removeById(attrId);
         return Result.success("删除成功");
     }

    /**
     * 更新规格项
     * @param productAttrVo 规格项信息
     * @return 更新结果
     */
     @PutMapping("/update")
     public Result updateAttr(@RequestBody ProductAttrVo productAttrVo) {
         ProductAttr productAttr = new ProductAttr();
         BeanUtils.copyProperties(productAttrVo, productAttr);
         productAttrService.saveOrUpdate(productAttr);
         return Result.success("更新成功");
     }
}
